package controladores;

import com.google.gson.Gson;

import entidades.Turno;
import entidades.usuarios.Chofer;
import utils.Constantes;
import utils.json.JSONParser;

public class ControladorTurnos extends BaseControlador
{
	private JSONParser<Turno> parser;
	
	public ControladorTurnos()
	{
		super(Constantes.URL_COMPLETA + Constantes.Turnos.SERVICIO);
		
		parser = new JSONParser<Turno>(Turno.class);
	}

	/**
	 * Obtiene el turno abierto del chofer.
	 * @param idChofer la id del chofer.
	 * @return el turno abierto, si este existe.
	 */
	public Turno getTurno (long idChofer)
	{
		String res = helper.doGet(Constantes.TURNO_CHOFER + "?id=" + idChofer);
		
		if (res != null)
			return parser.fromJson(res);
		
		return null;
	}
	
	/**
	 * Inicia un turno para un chofer dado.
	 * @param idChofer la id del chofer.
	 * @param idMovil la id del movil que se utilizara en el turno. Debe pertenecer al chofer.
	 * @return el turno, si se pudo completar la operacion.
	 */
	public Turno iniciarTurno (long idChofer, long idMovil)
	{
		Chofer chofer = new Chofer (idChofer, idMovil);
		
		String res = helper.doPost(Constantes.INICIAR_TURNO, null, new Gson().toJson(chofer));
		
		if (res != null)
			return parser.fromJson(res);
		
		return null;
	}
	
	/**
	 * Cierra el turno abierto de un chofer.
	 * @param idChofer la id del chofer.
	 * @return true si se pudo completar la operacion.
	 */
	public boolean cerrarTurno (long idChofer)
	{
		String res = helper.doGet(Constantes.CERRAR_TURNO + "?id=" + idChofer);
		
		if (res != null)
			return Boolean.valueOf(res);
		
		return false;
	}
	
	/**
	 * Asigna un movil a un turno.
	 * @param idChofer la id del chofer del turno.
	 * @param patente la patente del movil, debe pertenecer al chofer.
	 * @return true si se pudo completar la operacion.
	 */
	public boolean asignarMovil (long idChofer, String patente)
	{
		String res = helper.doGet(Constantes.Turnos.ASIGNAR_MOVIL + "?id=" + idChofer + "&patente=" + patente);
		
		if (res != null)
			return Boolean.valueOf(res);
		
		return false;
	}
}
